When using an output queuing shared memory switch architecture, it becomes necessary to maintain a detailed accounting of the shared memory that is being used to store packets in order to know exactly when to drop packets or when to permit them to enter shared memory. The decision to drop or permit packets depends on a variety of factors. In the Memory Controller ASIC, these include minimum thresholds for queues (the amount of memory an output queue is guaranteed to have for use), maximum thresholds for queues (the absolute maximum amount of memory an output queue is allowed to use), the amount of memory each queue is currently using, and the total size of the shared memory. The accounting for such a shared memory has traditionally been done in a centralized manner, where a single block of logic in an ASIC is responsible for determining whether to permit or deny a request to write to an output queue. It has also been closely tied to the shared memory itself. This approach results in moderate complexity of the logic block, as many calculations must be done to arrive at the final decision. The Independent Shared Memory Accounting of the present invention simplifies the complexity of the accounting of shared memory in the Memory Controller ASIC by breaking up the accounting into multiple parts and corresponding blocks of logic.
The Independent Shared Memory Accounting of the present invention is an improvement over existing techniques used to do accounting on an output queueing shared memory switch. The technique reduces complexity in the Memory Controller ASIC, resulting in an easier design task requiring less hardware.